package shopping;

import java.util.ArrayList;

import java.util.Scanner;


public class ShoppingCart {
    //使用一个列表（List）来存储购物车中的商品项（ProductCartItem）
    ArrayList<String> List1 =new ArrayList<>();
    ArrayList<Integer> List2 =new ArrayList<>();
    Scanner sc=new Scanner(System.in);
    Product[] arr=new Product[7];
    int Index;

    //提供添加商品到购物车的方法（addProduct），在添加时检查购物车是否已满以及商品库存是否足够
    public void addProduct(){

        Product g1=new Product("雪碧","饮料",4,20);
        Product g2=new Product("可乐","饮料",4,40);
        Product g3=new Product("果汁","饮料",5,29);
        Product g4=new Product("苹果","水果",6,34);
        Product g5=new Product("香蕉","水果",8,40);
        Product g6=new Product("橡皮","文具",3,29);
        Product g7=new Product("铅笔","文具",4,40);
        arr[0]=g1;
        arr[1]=g2;
        arr[2]=g3;
        arr[3]=g4;
        arr[4]=g5;
        arr[5]=g6;
        arr[6]=g7;

        int j;
        int count=0;
        String[] goods={"雪碧","可乐","果汁","苹果","香蕉","橡皮","铅笔"};
        //判断是否存在该商品
        boolean good=false;
        int i;
        String product;
        for(j=0;j<7;j++){
            System.out.println("商品有:雪碧,可乐,果汁,苹果,香蕉,橡皮,铅笔");
            System.out.println("请从中选择：");
            //用户自我选择商品
            product=sc.next();
            for (i = 0;i<7;i++ ) {
                good = product.equals(goods[i]);
                if (good){
                    break;
                }
            }
        if (good) {
            //打印该类商品下的各个商品信息
            Product  c = arr[i];
            System.out.println(c.toString());
            //判断是否添加至购物车
            System.out.println("是否添加至购物车,添加为1,否为2");
            int result=sc.nextInt();
            //若要添加至购物车
            if(result==1){
                System.out.println("请选择数目");
                int n=sc.nextInt();
                //判断数目是否足够
                if(n>0&&n<=c.getStock()){
                    c.setStock(c.getStock()-n);
                    System.out.println("添加购物车成功");
                    List2.add(n);
                    List1.add(product);
                    count++;
                    if(count==7){
                        System.out.println("购物车已满");
                        break;
                    }
                    if(count<7){
                    System.out.println("是否继续查看并添加至购物车，继续为1,否为2," +
                            "还可添加"+(7-count)+"次购物车");}
                    int m=sc.nextInt();
                    if(m==2){
                        break;
                    }}
                else{
                    System.out.println("添加购物车失败，库存不足");
                }
            }//若不加入购物车
}}}

//提供删除购物车中商品的方法（removeProduct），通过商品名称或索引来删除
    public void removeProduct(){
    System.out.println("是否删除购物车里的商品,删除为1,不删除为2");
    int b=sc.nextInt();
    if(b==1){
        while(true){
        System.out.println("请输入要删除的商品");
        String removeName=sc.next();
        Index=List1.indexOf(removeName);
        List1.remove(removeName);
        List2.remove(Index);
        System.out.println("删除成功，是否继续删除,删除为1,不删除为2");
        int x=sc.nextInt();
        if(x==2){
            break;
        }
        }
    }
    }

//提供查看购物车内容的方法（viewCart），列出购物车中的所有商品项及其信息
    public void viewCart(){
        System.out.println("是否查看购物车，是为1,否为2");
        int q=sc.nextInt();
        if(q==1){
        for(q=0;q<List1.size();q++){
            String element1=List1.get(q);
            int element2=List2.get(q);
            System.out.println("商品名为："+element1+" 数量为："+element2);}
        }
}

//提供结算方法（checkout），计算购物车中所有商品的总价
    public void checkout(){
        double sum=0;
        for(int i=0;i<List1.size();i++){
            int element2=List2.get(i);
            for(int k=0;k<List1.size();k++){
                if(arr[k].getName().equals(List1.get(i))){
                    sum+=arr[k].getPrice()*element2;
                }
            }
            }
        System.out.println("最总应付："+sum);

    }


}
